草庐IT

c++ - 对 boost::timer::auto_cpu_timer 的 undefined reference

全部标签

c - 如何进行 Windows 句柄继承

我有父进程和子进程,在父进程中我声明句柄将被继承,如http://msdn.microsoft.com/en-us/library/windows/desktop/ms724466%28v=vs.85%29.aspx:...SECURITY_ATTRIBUTESsa;sa.nLength=sizeof(SECURITY_ATTRIBUTES);sa.bInheritHandle=TRUE;sa.lpSecurityDescriptor=NULL;//CreateapipefortheParentprocess'sSTDOUT.if(!CreatePipe(&hChildReadPipe

c++ - _get_pgmptr 与 GetModuleFileName

这两者之间有什么区别(如果有的话)?MSDN很不清楚。这里听起来它们是等价的:https://msdn.microsoft.com/en-us/library/windows/desktop/ms683197%28v=vs.85%29.aspx但这里听起来好像_pgmptr可能并不总是给我一个完整的路径,但它并没有真正解释在什么情况下。https://msdn.microsoft.com/en-us/library/tza1y5f7.aspx_pgmptr似乎对我更有吸引力,因为我不必用它来玩缓冲区大小猜谜游戏。 最佳答案 _pgm

c - 0A 转换为 C 中的 0D0A

我必须使用C编写一个虚拟磁盘文件处理系统作为大学项目的一部分(我正在运行Windows),当我写入FAT表时遇到了一个问题,我试图创建一个FAT链包含对FATblock10(0A00)的引用,而是写入0D0A00。磁盘由1024个大小为1024的block组成,第一个block用于任意信息,第二和第三个block用于FAT,第四个block用于根目录,其余block用于更远的数据。FAT表定义为:fatentry_tFAT[MAXBLOCKS];Fatentry_t定义为:typedefshortfatentry_t;我使用以下方式访问它:typedefunionblock{datab

c++ - Boost 是否支持 Windows EnterCriticalSection API?

我知道Boost支持互斥锁和lock_guard,可用于实现临界区。但是Windows有一个用于关键部分的特殊API(参见EnterCriticalSection和LeaveCriticalSection),它比互斥锁快很多(对于很少竞争的短代码部分)。因此我的问题-在Boost中可以利用这个API,并回退到其他平台上基于自旋锁/互斥/futex的实现吗? 最佳答案 简单的答案是否定的。这里有一些相关背景fromanoldmailinglistthread:BTW.Iamagreethatmutexismoreuniversalso

c++ - `NumberOfConcurrentThreads`中参数 `CreateIoCompletionPort`如何使用

查看MSDNdocumentation对于CreateIoCompletionPort我们读到:NumberOfConcurrentThreads[in]ThemaximumnumberofthreadsthattheoperatingsystemcanallowtoconcurrentlyprocessI/OcompletionpacketsfortheI/Ocompletionport.ThisparameterisignorediftheExistingCompletionPortparameterisnotNULL.Ifthisparameteriszero,thesystem

c - GetOverlappedResult(bWait=TRUE) 与 WaitForSingleObject() 对于重叠 I/O

当我在Win32api上以OVERLAPPED方式打开和读取文件时,我有几种方法来完成IO请求,包括使用等待文件句柄(或重叠结构中的事件)WaitForSingleObjectGetOverlappedResult和bWait=TRUE这两个函数似乎具有相同的效果:线程停止直到句柄或事件发出信号,这意味着数据被放置在提供给ReadFile的缓冲区中。那么,有什么区别呢?为什么我需要GetOverlappedResult? 最佳答案 我完全同意RemusRusanuanswer.也改为创建自己的IOCP和线程池,它们将在此IOCP上监

c++ - Boost 1.66.0 : could not find boost libraries :boost_system, boost_filesystem、boost_thread、boost_date_time

我的配置是:操作系统:Windows10x64boost:1.66.0CMake:3.10VisualStudio:2017我正在以这种方式编译boost:bootstrap.\b2--build-dir=buildtoolset=msvcaddress-model=64--build-type=completestage运行CMake时出现此错误:couldnotfindboostlibraries:boost_systemboost_filesystemboost_threadboost_localeboost_date_time我搜索这些库,它们位于stage文件夹中。我尝试了B

C - Windows 和 Unix 上的可移植代码

我正在创建一个程序,我希望它在Windows和UNIX上运行。然而,我使用了很多特定于Windows或Unix的函数。例如位于#include中的函数和#include对于UNIX和#include和#include适用于Windows。我让它们独立工作,但我想将它们合并在一起。这是一个例子:structtimespecstart,end;//UNIXcodeLARGE_INTEGERclockFrequency;//WindowscodeQueryPerformanceFrequency(&clockFrequency);LARGE_INTEGERstartTime;LARGE_IN

c - 读取未格式化的数据

在C中,使用标准WindowsAPI,读取未格式化磁盘的最佳方法是什么?具体来说,我有一个MMC或SDcard有数据,但没有文件系统(不是FAT16,不是FAT32,只是原始数据)。如果有一种简单的方法可以打开整个卡进行逐字节二进制访问,那就太好了。谢谢! 最佳答案 我会去HANDLEdrive=CreateFile(_T("\\.\PhysicalDrive0"),GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);//errorhandlingDWORDbr=0;DISK_GEO

c - 确定进程是否已死 - 通过 PID

我有两种不同的方法来检查进程是否仍在运行:1)使用GetExitCodeProcess()2)使用CreateToolhelp32Snapshot()遍历进程列表并检查PID现在,在这两种情况下,我仍然知道我用TerminateProcess终止的进程仍然存在,即使它不是。有没有办法通过PID明确知道进程是活着还是死了?谢谢! 最佳答案 不要将PID用于这样的事情。PID被重复使用并且具有非常的范围,具有非常高的冲突概率。换句话说,您会发现一个正在运行的进程,但它是一个不同进程。 关于c